#ifndef __DHT11_H
#define __DHT11_H 

#include "stm32f1xx.h"

/* -------------------------------------------- DHT11引脚定义 -------------------------------------------- */

#define DHT11_DQ_GPIO_PORT                  GPIOA
#define DHT11_DQ_GPIO_PIN                   GPIO_PIN_1
#define DHT11_DQ_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)   /* PA口时钟使能 */

/* -------------------------------------------- DHT11控制宏定义 ------------------------------------------ */

#define DHT11_DQ_OUT(x)     do{ x ? \
                                HAL_GPIO_WritePin(DHT11_DQ_GPIO_PORT, DHT11_DQ_GPIO_PIN, GPIO_PIN_SET) : \
                                HAL_GPIO_WritePin(DHT11_DQ_GPIO_PORT, DHT11_DQ_GPIO_PIN, GPIO_PIN_RESET); \
                            }while(0)                                                /* 数据端口输出 */
#define DHT11_DQ_IN         HAL_GPIO_ReadPin(DHT11_DQ_GPIO_PORT, DHT11_DQ_GPIO_PIN)  /* 数据端口输入 */

/* -------------------------------------------- 函数声明 ------------------------------------------------- */

uint8_t dht11_init(void);                                   /* 初始化DHT11 */
uint8_t dht11_check(void);                                  /* 检测是否存在DHT11 */
uint8_t dht11_read_data(uint8_t *temp, uint8_t *humi);      /* 读取温湿度 */

#endif
